package com.example.UI.list;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import com.example.UI.StudentActivity;
import com.example.UI.entity.User;
import com.example.ui.R;

import java.util.List;

/**
 * StudentArrayAdapter 类继承自 ArrayAdapter，用于自定义 ListView 中学生列表项的布局。
 */
public class StudentArrayAdapter extends ArrayAdapter<User> {
    /**
     * StudentArrayAdapter 的构造函数，接收一个 StudentActivity 上下文和用户列表。
     *
     * @param context  StudentActivity 的上下文，用作获取系统资源等。
     * @param users    用户列表，包含所有要显示的用户对象。
     */
    public StudentArrayAdapter(StudentActivity context, List<User> users) {
        // 调用 ArrayAdapter 的构造函数，传入上下文和数据源
        super(context, 0, users);
    }

    /**
     * getView 方法用于为 ListView 的每一项创建或重用视图。
     * 此方法被调用以获取 ListView 每一项的视图。
     *
     * @param position      当前项在适配器中的位置。
     * @param convertView   如果 ListView 正在重用项，这是之前项的视图。
     * @param parent        ListView 的根布局。
     * @return              配置好的项的视图。
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // 根据位置获取当前项的数据对象
        User user = getItem(position);

        // 如果 convertView 为 null，则需要通过 inflate 方法创建一个新的视图
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false);
        }

        // 初始化 TextView 用于显示用户信息
        TextView tvClassName = convertView.findViewById(R.id.tvClassName);
        TextView tvStudentId = convertView.findViewById(R.id.tvStudentId);
        TextView tvName = convertView.findViewById(R.id.tvName);

        // 将用户数据绑定到相应的 TextView
        // 假设 User 类中的 getClass_name() 返回班级名称
        tvClassName.setText("班级：" + user.getClass_name());
        // 假设 User 类中的 getStudent_id() 返回学号
        tvStudentId.setText("学号：" + user.getStudent_id());
        // 假设 User 类中的 getName() 返回姓名
        tvName.setText("姓名：" + user.getName());

        // 返回配置好的视图，该视图会被添加到 ListView 中
        return convertView;
    }
}